package com.levy.contronller.jvm.bytecode;

/**
 * 方法的静态分派
 * Grandpa g1 = new Father();
 * 以上代码，g1的静态类型是Grandpa,而g1的实际类型（真正指向的类型）是Father
 * 我们可以得出一个结论：变量的静态类型是不会发生变化的，而变量的实际类型则是可以
 * 发生变化的（多态的一种体现），是在运行期才能确定
 */
public class MyTest5 {

    public static void main(String[] args) {
        MyTest5 myTest5 = new MyTest5();
        Grandpa g1 = new Father();
        Grandpa g2 = new Son();
        myTest5.test(g1);
        myTest5.test(g2);
    }

    private void test(Father father) {
        System.out.println("father");
    }

    private void test(Grandpa grandpa) {
        System.out.println("grandpa");
    }

    private void test(Son son) {
        System.out.println("son");
    }

}

class Grandpa {

}

class Father extends Grandpa {

}

class Son extends Father {

}
